@echo off
REM ====================================================================
REM 数智化团队考试系统 - Windows一体化脚本
REM 功能：自动安装环境 + 自动安装依赖 + 一键启动
REM Based on: xmky-exam (https://gitee.com/zhanghucheng/exam)
REM License: GPL-2.0
REM Modified: 2025-10-21
REM ====================================================================
chcp 65001 >nul
setlocal enabledelayedexpansion

:main_menu
cls
echo ========================================
echo   数智化团队考试系统 - 一体化管理
echo ========================================
echo.
echo   1. 快速启动（自动检测并安装） 
echo   2. 仅安装环境和依赖 
echo   3. 仅启动后端服务 
echo   4. 启动前端H5开发服务器 
echo   5. 启动前端移动端开发服务器 
echo   6. 查看系统信息 
echo   7. 清理编译文件 
echo   8. 停止MySQL服务 
echo   9. 清除数据库数据（危险操作） 
echo   0. 退出 
echo.
echo ========================================
set /p choice=请选择操作 (0-9): 

if "%choice%"=="1" goto quick_start
if "%choice%"=="2" goto install_only
if "%choice%"=="3" goto start_backend
if "%choice%"=="4" goto start_h5
if "%choice%"=="5" goto start_mobile
if "%choice%"=="6" goto show_info
if "%choice%"=="7" goto clean_build
if "%choice%"=="8" (
    call :stop_mysql
    pause
    goto main_menu
)
if "%choice%"=="9" (
    call :clear_database
    pause
    goto main_menu
)
if "%choice%"=="0" goto end
goto main_menu

REM ============================================================
REM 快速启动（自动安装+启动）
REM ============================================================
:quick_start
cls
echo ========================================
echo   快速启动模式
echo ========================================
echo.

REM 设置项目根目录
set PROJECT_ROOT=%~dp0
set TOOLS_DIR=%PROJECT_ROOT%tools
set JDK_DIR=%TOOLS_DIR%\jdk8
set MAVEN_DIR=%TOOLS_DIR%\maven
set MYSQL_DIR=%TOOLS_DIR%\mysql
set MYSQL_DATA_DIR=%MYSQL_DIR%\data
set MYSQL_PORT=3306

REM 检查Java环境
call :check_java
if errorlevel 1 (
    echo [操作] 正在自动安装Java环境...
    call :install_java
    if errorlevel 1 goto error_exit
)

REM 检查Maven环境
call :check_maven
if errorlevel 1 (
    echo [操作] 正在自动安装Maven环境...
    call :install_maven
    if errorlevel 1 goto error_exit
)

REM 检查MySQL环境
call :check_mysql
if errorlevel 1 (
    echo [操作] 正在自动安装MySQL环境...
    call :install_mysql
    if errorlevel 1 goto error_exit
)

REM 启动MySQL服务
call :start_mysql
if errorlevel 1 goto error_exit

REM 检查并初始化数据库
call :init_database
if errorlevel 1 goto error_exit

REM 检查后端是否已编译
if not exist "src\sys-web\target\digital-team-exam-5.6.0.jar" (
    echo.
    echo [检测] 后端未编译，开始编译...
    call :build_backend
    if errorlevel 1 goto error_exit
)

REM 启动后端
echo.
echo ========================================
echo   后端服务启动中...
echo ========================================
echo.
call :start_backend_service
goto end

REM ============================================================
REM 仅安装环境和依赖
REM ============================================================
:install_only
cls
echo ========================================
echo   安装模式
echo ========================================
echo.

set PROJECT_ROOT=%~dp0
set TOOLS_DIR=%PROJECT_ROOT%tools
set JDK_DIR=%TOOLS_DIR%\jdk8
set MAVEN_DIR=%TOOLS_DIR%\maven

REM 检查并安装Java
call :check_java
if errorlevel 1 (
    call :install_java
    if errorlevel 1 goto error_exit
)

REM 检查并安装Maven
call :check_maven
if errorlevel 1 (
    call :install_maven
    if errorlevel 1 goto error_exit
)

REM 编译后端
echo.
call :build_backend
if errorlevel 1 goto error_exit

REM 检查Node.js并安装前端依赖
call :check_node
if not errorlevel 1 (
    call :install_frontend
)

echo.
echo ========================================
echo   安装完成！
echo ========================================
echo.
pause
goto main_menu

REM ============================================================
REM 仅启动后端
REM ============================================================
:start_backend
cls
echo ========================================
echo   启动后端服务
echo ========================================
echo.

set PROJECT_ROOT=%~dp0
set TOOLS_DIR=%PROJECT_ROOT%tools
set JDK_DIR=%TOOLS_DIR%\jdk8
set MAVEN_DIR=%TOOLS_DIR%\maven

call :check_java
if errorlevel 1 (
    echo [错误] 未检测到Java环境，请先执行安装环境和依赖
    pause
    goto main_menu
)

if not exist "src\sys-web\target\digital-team-exam-5.6.0.jar" (
    echo [错误] 后端未编译，请先执行安装环境和依赖
    pause
    goto main_menu
)

call :start_backend_service
goto end

REM ============================================================
REM 启动前端H5
REM ============================================================
:start_h5
cls
echo ========================================
echo   启动前端H5开发服务器
echo ========================================
echo.

if not exist "h5\node_modules" (
    echo [错误] 前端H5依赖未安装
    echo [提示] 请先执行: cd h5 然后 npm install
    pause
    goto main_menu
)

cd h5
echo [信息] 正在启动H5开发服务器...
echo [端口] 默认 5173
echo.
call npm run dev
cd ..
pause
goto main_menu

REM ============================================================
REM 启动前端移动端
REM ============================================================
:start_mobile
cls
echo ========================================
echo   启动前端移动端开发服务器
echo ========================================
echo.

if not exist "m\node_modules" (
    echo [错误] 前端移动端依赖未安装
    echo [提示] 请先执行: cd m 然后 npm install
    pause
    goto main_menu
)

cd m
echo [信息] 正在启动移动端开发服务器...
echo.
call npm run dev
cd ..
pause
goto main_menu

REM ============================================================
REM 查看系统信息
REM ============================================================
:show_info
cls
echo ========================================
echo   系统信息
echo ========================================
echo.

set PROJECT_ROOT=%~dp0
set TOOLS_DIR=%PROJECT_ROOT%tools
set JDK_DIR=%TOOLS_DIR%\jdk8
set MAVEN_DIR=%TOOLS_DIR%\maven

echo [项目路径] %PROJECT_ROOT%
echo.

echo [Java环境（项目内置）]
if exist "%JDK_DIR%\bin\java.exe" (
    echo - 已安装: %JDK_DIR%
    "%JDK_DIR%\bin\java.exe" -version 2>&1 | findstr "version"
) else (
    echo - 未安装（需要通过菜单选项2安装）
)
echo.

echo [Maven环境（项目内置）]
if exist "%MAVEN_DIR%\bin\mvn.cmd" (
    echo - 已安装: %MAVEN_DIR%
    call "%MAVEN_DIR%\bin\mvn.cmd" -version 2>&1 | findstr "Apache Maven"
) else (
    echo - 未安装（需要通过菜单选项2安装）
)
echo.

echo [Node.js环境（系统环境）]
node -v >nul 2>&1
if not errorlevel 1 (
    for /f %%i in ('node -v') do echo - Node.js: %%i
    for /f %%i in ('npm -v') do echo - npm: %%i
    echo - 说明: 用于前端开发（可选）
) else (
    echo - 未安装（如需前端开发，请自行安装）
)
echo.

echo [MySQL环境（项目内置）]
if exist "%MYSQL_DIR%\bin\mysqld.exe" (
    echo - 已安装: %MYSQL_DIR%
    netstat -ano | findstr ":%MYSQL_PORT% " | findstr "LISTENING" >nul 2>&1
    if not errorlevel 1 (
        echo - 状态: 运行中（端口%MYSQL_PORT%）
    ) else (
        echo - 状态: 未运行
    )
) else (
    echo - 未安装（需要通过菜单选项2安装）
)
echo.

echo [后端状态]
if exist "src\sys-web\target\digital-team-exam-5.6.0.jar" (
    echo - 已编译: src\sys-web\target\digital-team-exam-5.6.0.jar
) else (
    echo - 未编译
)
echo.

echo [前端状态]
if exist "h5\node_modules" (
    echo - H5依赖: 已安装
) else (
    echo - H5依赖: 未安装
)
if exist "m\node_modules" (
    echo - 移动端依赖: 已安装
) else (
    echo - 移动端依赖: 未安装
)
echo.

pause
goto main_menu

REM ============================================================
REM 清理编译文件
REM ============================================================
:clean_build
cls
echo ========================================
echo   清理编译文件
echo ========================================
echo.
echo [警告] 这将删除所有编译产物
echo.
echo [提示] 不会删除下载的环境（tools目录）
echo.
set /p confirm=确认清理吗？(Y/N): 

if /i not "%confirm%"=="Y" goto main_menu

echo.
echo [清理] 正在清理后端编译文件...
if exist "src" (
    cd src
    call mvn clean >nul 2>&1
    cd ..
)

echo [完成] 清理完成
echo.
pause
goto main_menu

REM ============================================================
REM 子函数：检查Java环境（强制使用项目内置）
REM ============================================================
:check_java
if exist "%JDK_DIR%\bin\java.exe" (
    set "JAVA_HOME=%JDK_DIR%"
    set "PATH=%JDK_DIR%\bin;%PATH%"
    echo [OK] Java环境: 项目内置Java 8
    exit /b 0
)

echo [X] Java环境: 未安装（需要安装到tools目录）
exit /b 1

REM ============================================================
REM 子函数：安装Java
REM ============================================================
:install_java
echo.
echo [步骤] 安装Java环境到项目目录...
echo.

if not exist "%TOOLS_DIR%" mkdir "%TOOLS_DIR%"

set JDK_URL=https://mirrors.tuna.tsinghua.edu.cn/Adoptium/8/jdk/x64/windows/OpenJDK8U-jdk_x64_windows_hotspot_8u462b08.zip
set JDK_ZIP=%TOOLS_DIR%\openjdk8.zip

echo [下载] 正在下载 OpenJDK 8 (约100MB)...
echo [来源] 清华大学开源镜像站
echo.

powershell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Write-Host '[进度] 下载中，请稍候...'; try { Invoke-WebRequest -Uri '%JDK_URL%' -OutFile '%JDK_ZIP%' -TimeoutSec 1800; Write-Host '[成功] JDK下载完成' } catch { Write-Host '[错误] 下载失败'; exit 1 }}"

if errorlevel 1 exit /b 1

echo [解压] 正在解压JDK...
powershell -Command "Expand-Archive -Path '%JDK_ZIP%' -DestinationPath '%TOOLS_DIR%' -Force"

for /d %%d in ("%TOOLS_DIR%\jdk8*") do (
    if exist "%%d" (
        if exist "%JDK_DIR%" rmdir /s /q "%JDK_DIR%"
        move "%%d" "%JDK_DIR%" >nul
    )
)

del "%JDK_ZIP%" >nul 2>&1

if exist "%JDK_DIR%\bin\java.exe" (
    set "JAVA_HOME=%JDK_DIR%"
    set "PATH=%JDK_DIR%\bin;%PATH%"
    echo [OK] Java安装完成
    exit /b 0
)

echo [X] Java安装失败
exit /b 1

REM ============================================================
REM 子函数：检查Maven环境（强制使用项目内置）
REM ============================================================
:check_maven
if exist "%MAVEN_DIR%\bin\mvn.cmd" (
    set "M2_HOME=%MAVEN_DIR%"
    set "PATH=%MAVEN_DIR%\bin;%PATH%"
    echo [OK] Maven环境: 项目内置Maven 3.9.9
    exit /b 0
)

echo [X] Maven环境: 未安装（需要安装到tools目录）
exit /b 1

REM ============================================================
REM 子函数：安装Maven
REM ============================================================
:install_maven
echo.
echo [步骤] 安装Maven环境到项目目录...
echo.

if not exist "%TOOLS_DIR%" mkdir "%TOOLS_DIR%"

set MVN_URL=https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.9.11/binaries/apache-maven-3.9.11-bin.zip
set MVN_ZIP=%TOOLS_DIR%\maven.zip

echo [下载] 正在下载 Apache Maven 3.9.11 (约10MB)...
echo.

powershell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; Write-Host '[进度] 下载中...'; try { Invoke-WebRequest -Uri '%MVN_URL%' -OutFile '%MVN_ZIP%' -TimeoutSec 600; Write-Host '[成功] Maven下载完成' } catch { Write-Host '[错误] 下载失败'; exit 1 }}"

if errorlevel 1 exit /b 1

echo [解压] 正在解压Maven...
powershell -Command "Expand-Archive -Path '%MVN_ZIP%' -DestinationPath '%TOOLS_DIR%' -Force"

for /d %%d in ("%TOOLS_DIR%\apache-maven-*") do (
    if exist "%%d" (
        if exist "%MAVEN_DIR%" rmdir /s /q "%MAVEN_DIR%"
        move "%%d" "%MAVEN_DIR%" >nul
    )
)

del "%MVN_ZIP%" >nul 2>&1

if exist "%MAVEN_DIR%\bin\mvn.cmd" (
    set "M2_HOME=%MAVEN_DIR%"
    set "PATH=%MAVEN_DIR%\bin;%PATH%"
    echo [OK] Maven安装完成
    exit /b 0
)

echo [X] Maven安装失败
exit /b 1

REM ============================================================
REM 子函数：检查Node.js
REM ============================================================
:check_node
node -v >nul 2>&1
if not errorlevel 1 (
    echo [OK] Node.js环境: 已安装
    exit /b 0
)
echo [X] Node.js环境: 未安装（可选）
exit /b 1

REM ============================================================
REM 子函数：编译后端
REM ============================================================
:build_backend
echo.
echo [编译] 正在编译后端项目...
echo.

if not exist "src" (
    echo [错误] 未找到src目录
    exit /b 1
)

cd src
echo [执行] mvn clean package -DskipTests
echo.
call mvn clean package -DskipTests

if errorlevel 1 (
    echo.
    echo [错误] 后端编译失败
    cd ..
    exit /b 1
)

cd ..
echo.
echo [OK] 后端编译完成
exit /b 0

REM ============================================================
REM 子函数：安装前端依赖
REM ============================================================
:install_frontend
echo.
echo [前端] 正在安装前端依赖...
echo.

if exist "h5\package.json" (
    echo [H5] 安装依赖中...
    cd h5
    call npm install
    cd ..
)

if exist "m\package.json" (
    echo [移动端] 安装依赖中...
    cd m
    call npm install
    cd ..
)

echo [OK] 前端依赖安装完成
exit /b 0

REM ============================================================
REM 子函数：检查MySQL环境（强制使用项目内置）
REM ============================================================
:check_mysql
if exist "%MYSQL_DIR%\bin\mysqld.exe" (
    echo [OK] MySQL环境: 项目内置MySQL 5.7
    exit /b 0
)

echo [X] MySQL环境: 未安装（需要安装到tools目录）
exit /b 1

REM ============================================================
REM 子函数：安装MySQL
REM ============================================================
:install_mysql
echo.
echo [步骤] 安装MySQL到项目目录...
echo [说明] 下载MySQL 5.7便携版（约350MB）
echo.

if not exist "%TOOLS_DIR%" mkdir "%TOOLS_DIR%"

REM 使用MySQL 5.7.44绿色版
set MYSQL_URL=https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.44-winx64.zip
set MYSQL_ZIP=%TOOLS_DIR%\mysql.zip

echo [下载] 正在下载 MySQL 5.7.44 (约350MB)...
echo [来源] MySQL官方下载
echo [提示] 首次下载可能需要较长时间，请耐心等待...
echo.

powershell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $ProgressPreference = 'SilentlyContinue'; try { Write-Host '[进度] 下载中...'; Invoke-WebRequest -Uri '%MYSQL_URL%' -OutFile '%MYSQL_ZIP%' -TimeoutSec 3600; Write-Host '[成功] MySQL下载完成' } catch { Write-Host '[错误] 下载失败: ' $_.Exception.Message; exit 1 }}"

if errorlevel 1 (
    echo.
    echo [错误] MySQL下载失败
    echo [提示] 您也可以手动下载MySQL 5.7并解压到: %MYSQL_DIR%
    exit /b 1
)

echo [解压] 正在解压MySQL（可能需要1-2分钟）...
powershell -Command "Expand-Archive -Path '%MYSQL_ZIP%' -DestinationPath '%TOOLS_DIR%' -Force"

REM 重命名解压后的目录
for /d %%d in ("%TOOLS_DIR%\mysql-*") do (
    if exist "%%d" (
        if exist "%MYSQL_DIR%" rmdir /s /q "%MYSQL_DIR%"
        move "%%d" "%MYSQL_DIR%" >nul
    )
)

del "%MYSQL_ZIP%" >nul 2>&1

REM 创建MySQL配置文件
echo [配置] 正在创建MySQL配置...
(
echo [mysqld]
echo port=%MYSQL_PORT%
echo basedir=%MYSQL_DIR:\=/%
echo datadir=%MYSQL_DATA_DIR:\=/%
echo max_connections=200
echo character-set-server=utf8mb4
echo default-storage-engine=INNODB
echo sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
echo max_allowed_packet=16M
echo lower_case_table_names=1
echo [mysql]
echo default-character-set=utf8mb4
echo [client]
echo default-character-set=utf8mb4
) > "%MYSQL_DIR%\my.ini"

REM 初始化MySQL数据目录
echo [初始化] 正在初始化MySQL数据目录...
if not exist "%MYSQL_DATA_DIR%" mkdir "%MYSQL_DATA_DIR%"

cd "%MYSQL_DIR%\bin"
mysqld --initialize-insecure --basedir="%MYSQL_DIR%" --datadir="%MYSQL_DATA_DIR%" >nul 2>&1

REM 临时启动MySQL以设置密码 
echo [配置] 正在设置root密码... 
start /B "" "%MYSQL_DIR%\bin\mysqld.exe" --defaults-file="%MYSQL_DIR%\my.ini" --console >nul 2>&1
timeout /t 5 /nobreak >nul

REM 设置root密码为'root'
"%MYSQL_DIR%\bin\mysql.exe" -uroot --port=%MYSQL_PORT% -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'root'; FLUSH PRIVILEGES;" >nul 2>&1

REM 停止临时MySQL
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%MYSQL_PORT% " ^| findstr "LISTENING"') do (
    taskkill /F /PID %%a >nul 2>&1
)
timeout /t 2 /nobreak >nul

cd "%PROJECT_ROOT%"

if exist "%MYSQL_DIR%\bin\mysqld.exe" (
    echo [OK] MySQL安装完成（root密码已设置为: root）
    exit /b 0
)

echo [X] MySQL安装失败
exit /b 1

REM ============================================================
REM 子函数：启动MySQL服务
REM ============================================================
:start_mysql
echo.
echo [MySQL] 正在检查MySQL服务状态...

REM 检查MySQL是否已在运行
netstat -ano | findstr ":%MYSQL_PORT% " | findstr "LISTENING" >nul 2>&1
if not errorlevel 1 (
    echo [OK] MySQL服务已在运行（端口%MYSQL_PORT%）
    exit /b 0
)

echo [启动] 正在启动MySQL服务...
echo [说明] MySQL将在后台运行，数据保存在: %MYSQL_DATA_DIR%
echo.

REM 启动MySQL（后台运行）
start /B "" "%MYSQL_DIR%\bin\mysqld.exe" --defaults-file="%MYSQL_DIR%\my.ini" --console

REM 等待MySQL启动
echo [等待] MySQL启动中，请稍候...
timeout /t 5 /nobreak >nul

REM 检查是否启动成功
netstat -ano | findstr ":%MYSQL_PORT% " | findstr "LISTENING" >nul 2>&1
if errorlevel 1 (
    echo [错误] MySQL启动失败
    echo [提示] 请检查端口%MYSQL_PORT%是否被占用
    exit /b 1
)

echo [OK] MySQL服务启动成功（端口%MYSQL_PORT%）
exit /b 0

REM ============================================================
REM 子函数：初始化数据库
REM ============================================================
:init_database
echo.
echo [数据库] 正在检查数据库...

REM 检查数据库是否已存在
"%MYSQL_DIR%\bin\mysql.exe" -uroot -proot --port=%MYSQL_PORT% -e "USE xmky_exam;" >nul 2>&1
if not errorlevel 1 (
    echo [OK] 数据库已存在: xmky_exam
    exit /b 0
)

echo [创建] 正在创建数据库: xmky_exam
"%MYSQL_DIR%\bin\mysql.exe" -uroot -proot --port=%MYSQL_PORT% -e "CREATE DATABASE xmky_exam CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

if errorlevel 1 (
    echo [错误] 数据库创建失败
    exit /b 1
)

REM 导入数据
if exist "db\mysql\5.6.0.sql" (
    echo [导入] 正在导入初始数据（可能需要1-2分钟）...
    echo [提示] 请耐心等待，不要关闭窗口...
    "%MYSQL_DIR%\bin\mysql.exe" -uroot -proot --port=%MYSQL_PORT% xmky_exam < "db\mysql\5.6.0.sql"
    
    if errorlevel 1 (
        echo [警告] 数据导入可能失败，但不影响继续
    ) else (
        echo [OK] 数据导入完成
    )
) else (
    echo [警告] 未找到数据库脚本: db\mysql\5.6.0.sql
)

echo [OK] 数据库初始化完成
exit /b 0

REM ============================================================
REM 子函数：停止MySQL服务
REM ============================================================
:stop_mysql
echo.
echo [停止] 正在停止MySQL服务...

REM 查找MySQL进程
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%MYSQL_PORT% " ^| findstr "LISTENING"') do (
    taskkill /F /PID %%a >nul 2>&1
)

echo [OK] MySQL服务已停止
exit /b 0

REM ============================================================
REM 子函数：启动后端服务
REM ============================================================
:start_backend_service
cd src\sys-web\target

echo [服务] 数智化团队考试系统
echo [端口] 8000
echo [账号] admin / 111111
echo [说明] 按 Ctrl+C 停止服务
echo.
echo ========================================
echo.

REM 强制使用项目内置Java 8
if exist "%JDK_DIR%\bin\java.exe" (
    "%JDK_DIR%\bin\java.exe" -jar digital-team-exam-5.6.0.jar
) else (
    echo [错误] 未找到项目内置Java环境
    echo [提示] 请先执行菜单选项 2 安装环境
    pause
    exit /b 1
)
cd ..\..\..
exit /b 0

REM ============================================================
REM 子函数：清除数据库数据
REM ============================================================
:clear_database
echo.
echo ========================================
echo   清除数据库数据（危险操作）
echo ========================================
echo.
echo [警告] 此操作将删除数据库中的所有数据！
echo [警告] 此操作不可逆，请谨慎操作！
echo.

set PROJECT_ROOT=%~dp0
set TOOLS_DIR=%PROJECT_ROOT%tools
set MYSQL_DIR=%TOOLS_DIR%\mysql
set MYSQL_PORT=3306

REM 检查MySQL是否在运行
netstat -ano | findstr ":%MYSQL_PORT% " | findstr "LISTENING" >nul 2>&1
if errorlevel 1 (
    echo [错误] MySQL服务未运行
    echo [提示] 请先启动MySQL服务
    exit /b 1
)

REM 二次确认
set /p confirm=确认要删除数据库吗？(输入 YES 继续): 
if not "%confirm%"=="YES" (
    echo [取消] 操作已取消
    exit /b 0
)

echo.
echo [执行] 正在删除数据库...

REM 删除数据库
"%MYSQL_DIR%\bin\mysql.exe" -uroot -proot --port=%MYSQL_PORT% -e "DROP DATABASE IF EXISTS xmky_exam;" 2>&1

if errorlevel 1 (
    echo [错误] 数据库删除失败
    exit /b 1
)

echo [成功] 数据库已删除 
echo.
echo [提示] 您可以选择以下操作： 
echo   - 选择菜单选项 1 或 2 重新初始化数据库 
echo   - 手动导入数据库脚本 
echo.

exit /b 0

REM ============================================================
REM 错误退出
REM ============================================================
:error_exit
echo.
echo [错误] 操作失败，请检查错误信息
pause
goto main_menu

REM ============================================================
REM 结束
REM ============================================================
:end
endlocal
exit /b 0
